from django.db import models

from libs.CommonBaseModel import BaseModel

# Create your models here.
'''
先写普通字段
再写外键字段
'''

from django.contrib.auth.models import AbstractUser


# 用户表
class UserInfo(AbstractUser, BaseModel):
    phone = models.BigIntegerField(verbose_name="手机号", help_text="手机号", null=True, blank=True)
    '''
    null=True   数据库该字段可以为空
    blank=True  admin后台管理可以为空
    '''
    # 依赖于 Pillow 模块 : python -m pip install Pillow
    avatar = models.FileField(verbose_name="用户头像", help_text="用户头像",
                              upload_to='avatar/', default='media/avatar/default.png')
    # 给avatar字段传文件对象，该文件会自动存储到 avatar 文件夹下，然后avatar字段只保存文件路径  例如 avatar/default.png(不上传文件的默认头像文件)

    is_deleted = models.BooleanField(verbose_name="是否删除用户", help_text="是否删除用户", default=False)

    # 用户关联个人站点
    # 一对一关系：一个用户只能有一个个人站点，一个个人站点只能对应一个用户
    blog = models.OneToOneField(verbose_name="用户关联个人站点", to="blog.Blog", on_delete=models.CASCADE, null=True,blank=True)

    # 配置数据库元信息
    class Meta:
        # 指定数据库在后台显示的名字
        verbose_name = "用户表"
        verbose_name_plural = verbose_name
        # 指定当前模型表在数据库中的表名
        db_table = "userinfo"

    # 默认以当前用户名返回
    def __str__(self):
        return self.username
